﻿using SanFranciscoModel.Familiar;
using SanFranciscoModel.Nacionalidad;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using SanFranciscoModel.Intermedias;
using SanFranciscoModel.Utiles;

namespace SanFrancisco
{
    public partial class AltaFamiliar : Form
    {
        private int _DNI;
        private string Error;

        public AltaFamiliar(int dni)
        {
            _DNI = dni;
            InitializeComponent();
        }

        private void btnGuardar_Click(object sender, EventArgs e)
        {
            if (ValidarCampos())
            {
                Guardar();
            }
            else
            {
                MessageBox.Show(Error, "Campos Incompletos", MessageBoxButtons.OK, MessageBoxIcon.Error);
            } 
           
        }

        private void Guardar()
        {
            FamiliarManager FamiliarManager = new FamiliarManager();
            Familiar Familiar = new Familiar();

            FamiliarXAlumno FamiliarXAlumno = new FamiliarXAlumno();

            if (FamiliarManager.ExisteFamiliar(int.Parse(txtDNIFamiliar.Text), _DNI))
            {
                MessageBox.Show("Ya existe un familiar con ese DNI para el alumno seleccionado");
            }
            else
            {
                Familiar.DNIFamiliar = int.Parse(txtDNIFamiliar.Text);
                Familiar.Nombre = txtNombre.Text;
                Familiar.Apellido = txtApellido.Text;
                Familiar.FechaNacimiento = dpFechaNac.Value;
                Familiar.Sexo = ((int)selSexo.SelectedValue);
                Familiar.Direccion = txtDireccion.Text;
                Familiar.Nacionalidad = ((int)cmbNacionalidad.SelectedValue);
                Familiar.TipoFamiliar = cmbTipo.SelectedIndex + 1;
                Familiar.Ocupacion = txtOcupacion.Text;
                Familiar.Activo = true;
                Familiar.Telefono = int.Parse(txtTelefono.Text);

                FamiliarXAlumno.DNIAlumno = _DNI;
                FamiliarXAlumno.DNIFamiliar = int.Parse(txtDNIFamiliar.Text);

                FamiliarManager.guardarFamiliar(Familiar);
                FamiliarManager.guardarFamiliarXAlumno(FamiliarXAlumno);

                MessageBox.Show("Familiar ingresado con exito");
                this.Close();
            }
        }


        private void AltaFamiliar_Load(object sender, EventArgs e)
        {
            txtDni.Text = _DNI.ToString();

            CargarSexo();
            CargarNacionalidades();
            CargarTipoFamiliar();
            
        }

        private void CargarTipoFamiliar()
        {
            FamiliarManager FamiliarManager = new FamiliarManager();
            cmbTipo.ValueMember = "idTipoFamiliar";
            cmbTipo.DisplayMember = "TipoFamiliar1";
            cmbTipo.DataSource = FamiliarManager.getTipoFamiliarAll();
            //FamiliarManager FamiliarManager = new FamiliarManager();
            //List<TipoFamiliar> TipoFamiliarList = FamiliarManager.getTipoFamiliarAll();

            //foreach (var tipo in TipoFamiliarList)
            //{
            //    cmbTipo.Items.Add(tipo.TipoFamiliar1);
            //}
        }

        private void AltaDocente_Load(object sender, EventArgs e)
        {
            txtDni.Text = _DNI.ToString();

            CargarSexo();
            CargarNacionalidades();
        }

        private void CargarNacionalidades()
        {
            NacionalidadManager NacionalidadManager = new NacionalidadManager();
            cmbNacionalidad.ValueMember = "idPais";
            cmbNacionalidad.DisplayMember = "Pais";
            cmbNacionalidad.DataSource = NacionalidadManager.getNacionalidadAll();
            cmbNacionalidad.SelectedValue = 8;

        }

        private void CargarSexo()
        {
            UtilesManager Sexo = new UtilesManager();
            selSexo.DisplayMember = "Sexo1";
            selSexo.ValueMember = "idSexo";
            selSexo.DataSource = Sexo.getSexoAll();

        }

        private void button1_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void txtDNIFamiliar_TextChanged(object sender, EventArgs e)
        {
            Utils.SoloNumeros(sender, e);
        }

        private void txtDNIFamiliar_KeyPress(object sender, KeyPressEventArgs e)
        {
            Utils.SoloNumeros(sender, e);
        }




        private bool ValidarCampos()
        {
            Error = "";
            bool valido = true;
            if (txtDNIFamiliar.Text.Trim() == "")
            {
                Error += "Ingrese un DNI Familiar \n";
                valido = false;
            }
            if (txtNombre.Text.Trim() == "")
            {
                Error += "Ingrese un Nombre \n";
                valido = false;
            }
            if (txtApellido.Text.Trim() == "")
            {
                Error += "Ingrese un Apellido \n";
                valido = false;
            }
            if (txtDireccion.Text.Trim() == "")
            {
                Error += "Ingrese una Dirección \n";
                valido = false;
            }
            if (txtTelefono.Text.Trim() == "")
            {
                Error += "Ingrese un Telefono \n";
                valido = false;
            }
            if (cmbNacionalidad.SelectedValue == null)
            {
                Error += "Seleccione una Nacionalidad \n";
                valido = false;
            }
            if (txtOcupacion.Text.Trim() == "")
            {
                Error += "Ingrese una ocupación \n";
                valido = false;
            }

            if (dpFechaNac.Value > DateTime.Now)
            {
                Error += "La fecha de Nac. no puede ser mayor a hoy. \n";
                valido = false;
            }
            else
            {
                if (Utils.DiferenciaFechas(DateTime.Now, dpFechaNac.Value) < 18)
                {
                    Error += "Los Familiares no pueden ser menores a 18 años. \n";
                    valido = false;
                }
                else if (Utils.DiferenciaFechas(DateTime.Now, dpFechaNac.Value) > 100)
                {
                    Error += "Los docentes no pueden ser mayores a 100 años. \n";
                    valido = false;
                }
            }

            return valido;
        }

        private void txtTelefono_TextChanged(object sender, EventArgs e)
        {
            Utils.SoloNumeros(sender, e);
        }

        private void txtTelefono_KeyPress(object sender, KeyPressEventArgs e)
        {
            Utils.SoloNumeros(sender, e);
        }


    }
}
